package com.company.consumer.config;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import com.netflix.loadbalancer.RetryRule;
import com.netflix.loadbalancer.RoundRobinRule;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class ConfigBean {

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    /**
     * 设置ribbon负载均衡的算法，默认是轮询算法，也即每个都轮询一次。
     * @return
     */
    @Bean
    public IRule myRule() {
         return new RoundRobinRule(); //默认是轮询算法，也即每个都轮询一次。
        // return new RandomRule(); //现在采用随机的算法
        // return new RetryRule(); //如果provider都是正常的话，则轮询。如果有1个不可用的话，则在尝试几次失败后，会自动轮询能正常使用的服务
    }
}
